OpenRoads Designer CONNECT Edition SDK Help

Report missing link or selection of element template

The below code iterates over all the feature symbology's used by current DGN file and finds the missing default or 3D template.


//Required References
using Bentley.CifNET.ContentManagementModel;
using Bentley.CifNET.GeometryModel.ContentManagement;
using System.Diagnostics;

public void ReportMissingElementTemplatesFromFS()
        {
            //Get Object space 
            Bentley.CifNET.CadSystem.IObjectSpaceManager objectSpaceManager = Bentley.CifNET.ServiceManager.Instance.GetService<Bentley.CifNET.CadSystem.IObjectSpaceManager>();
            Bentley.CifNET.Objects.IObjectSpace objectSpace = objectSpaceManager.ObjectSpace;
            if (objectSpace == null) return;

            //Get or create ContentManagementModel
            Bentley.CifNET.ContentManagementModel.ContentManagementModel cmm = Bentley.CifNET.ContentManagementModel.ContentManagementModel.GetContentManagementModelAndCreateIfDontExist(objectSpace);
            if (cmm == null) return;

            //Get all feature symbology's 
            Bentley.CifNET.ContentManagementModel.GeometryAspectNameSet geometryAspectNameSet = cmm.GeometryAspectNameSet;

            Trace.WriteLine("Feature Symbology's having missing element templates: ");
            foreach (GeometryAspect geometryAspect in geometryAspectNameSet)
            {
                GeometricGeometryAspect geometricGeometryAspect = geometryAspect as GeometricGeometryAspect;
                if (geometricGeometryAspect == null) continue;

                //Get deafault template and 3D template for current feature symbology
                Bentley.CifNET.Model.ElementTemplate defaultElementTemplate = geometricGeometryAspect.DefaultElementTemplate;
                Bentley.CifNET.Model.ElementTemplate elementTemplate3D = geometricGeometryAspect.ThreeDElementTemplate;

                if (defaultElementTemplate == null || elementTemplate3D == null)
                {
                    //Report FS name having either default or 3D template missing
                    Trace.WriteLine(geometryAspect.Name.ToString());
                }
            }
        }

Output